package org.mte.sak.file.filter;

import java.io.File;
import java.io.FilenameFilter;

/**
 * Filtro per la determinazione di una lista
 * di file che contengono una stringa e un'estensione
 * specificata.
 *
 * @author Marco Traversari
 * @version $Revision: 1.2 $ $Date: 2011-04-20 08:34:21 $
 */
public class IndexOfFilter implements FilenameFilter {

    /**
     * Stringa da cercare.
     */
    private String stringToFind = null;

    /**
     * Tipo estensione file.
     */
    private String ext = null;

    /**
     * IndexOfFilter
     * @param stringToFind stringa da cercare.
     * @param ext estensione dei file da considerare.
     */
    public IndexOfFilter(String stringToFind, String ext) {
        this.stringToFind = stringToFind;
        this.ext = ext;
    }

    /**
     * Controlla se un specificato file deve essere incluso in una
     * lista. La regola implementata è che il suo nome deve
     * contenere la stringa specificata
     *
     * @param   dir è la directory dove viene ricercato il file.
     * @param   name è il nome deil file.
     * @return  <code>true</code> se e solo se il file deve essere incluso,
     * 			<code>false</code> altrimenti.
     */
    public boolean accept(File dir, String name) {
        boolean isFound = false;
        if (dir != null
                && name != null
                && stringToFind != null
                && ext != null) {
            int posPoint = name.lastIndexOf(".");
            String nExt = name.substring(posPoint + 1);
            if (nExt.equals(ext) || ext.equals("*")) {
            	isFound = name.indexOf(stringToFind) != -1 || stringToFind.equals("");
            }
    	}
        return isFound;
    }
}
